// 因为所有请求的基地址相同,将create方法构建的实例对象抽取出来
// 导入axios
import axios from 'axios'
// 导入token工具
import { getToken, removeToken } from '../utils/token'
// 导入elementui中的message组件
import { Message } from 'element-ui'
// 导入路由
import router from '../router/index'

// 创建新的副本
const request = axios.create({
  baseURL: process.env.VUE_APP_BaseURL,
  // 设置ajax跨域请求携带cookie
  withCredentials: true
})

// 注册请求拦截器
request.interceptors.request.use(
  function (config) {
    // 在发送请求前设置token
    // 判断是否有token
    const token = getToken()
    // 统一设置token
    if (token) {
      config.headers.token = token
    }
    return config
  },
  // 如果请求错误则返回错误的promise
  function (error) {
    return Promise.reject(error)
  }
)

// 注册响应拦截器
request.interceptors.response.use(function (response) {
  // console.log(response)
  if (response.data.code === 200) {
    return response
  } else if (response.data.code === 206) {
    // token有问题
    Message.error('必须先登录')
    // 删除token
    removeToken()
    // 跳转页面
    router.push('/login')
    // 返回错误信息的promise
    return Promise.reject(response.data.message)
  } else {
    Message.warning(response.data.message)
    return Promise.reject(response.data.message)
  }
})

// 将request实例暴露出去
export default request
